import { IPSChartCoordinateSystemGeo } from './ipschart-coordinate-system-geo';
import { IPSChartGeo } from './ipschart-geo';
import { PSDEChartCoordinateSystemImplBase } from './psdechart-coordinate-system-impl-base';

export class PSDEChartCoordinateSystemGeoImpl extends PSDEChartCoordinateSystemImplBase implements IPSChartCoordinateSystemGeo {
  protected pschartgeo: IPSChartGeo | null = null;

  getPSChartGeo(): IPSChartGeo | null {
    if (this.pschartgeo != null) return this.pschartgeo;
    const value = this.M.getPSChartGeo;
    if (value == null) {
      return null;
    }
    this.pschartgeo = this.getPSModel4('control.chart.IPSChartGeo', value, 'getPSChartGeo') as IPSChartGeo;
    return this.pschartgeo;
  }

  get psChartGeo(): IPSChartGeo | null {
    return this.getPSChartGeo();
  }

  getPSChartGeoMust(): IPSChartGeo {
    const value = this.getPSChartGeo();
    if (value == null) {
      throw new Error('未指定地理坐标系组件');
    }
    return value;
  }

  get cls(): string {
    return 'PSDEChartCoordinateSystemGeoImpl';
  }

  instanceof(cls: string): boolean {
    if (cls == 'control.chart.IPSChartCoordinateSystemGeo') return true;
    return super.instanceof(cls);
  }
}
